#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>

int main(int argc, char *argv[]) {
  int ligne=0,car=0,c;
  int startline=0;

  FILE *fpread;
  FILE *fpwrite;

  if (argc != 2) {
    printf("USAGE = gli fichier\n");
    exit(1);
  }
  /* Ouverture du fichier en lecture */
  fpread = fopen(argv[1],"r");
  if (fpread == NULL) {
    printf("Error openning reading file : %s\n",argv[1]);
    abort();
  }
  /* Ouverture du fichier en écriture */
  fpwrite = fopen(strcat(argv[1],".idx"),"w");
  if (fpwrite == NULL) {
    printf("Error openning writing file : %s\n",strcat(argv[1],".idx"));
    abort();
  }
  if (fwrite(&startline,sizeof(int),1,fpwrite) != 1) { /* Saving first start ! */
    perror("Erreur lors de l'écriture");
    abort();
  }
  while ((c = fgetc(fpread)) != EOF) {
    car++;
    if (c == '\n') {
      /* Une nouvelle ligne est détectée */
      ligne++;
      printf("Ligne %i détectée avec %i caractères (%i bits)\n",ligne,car,startline);
      /* Writing to file */
      if (fwrite(&startline,sizeof(int),1,fpwrite) != 1) { /* On sauve le décalage de la ligne */
         perror("Erreur lors de l'écriture");
         abort();
      }
      /* Set & reset for next iteration */
      startline += car; /* Save begining of next line */
      car = 0;
    }
  }
  fclose(fpwrite);
  fclose(fpread);
  return EXIT_SUCCESS;
}
